package dletc.Test;

public class Test02 {

	public static void main(String[] args) {
		// 案例： 实现火车站卖票的功能， 需要三个窗口卖票，总票数100张
				//多个线程实现同一个操作
				
		//创建三个对象：
		Window w1 = new Window();
		w1.setName("窗口1");
		
		Window w2 = new Window();
		w2.setName("窗口2");
		
		Window w3 = new Window();
		w3.setName("窗口3");
		
		w1.start();
		w2.start();
		w3.start();

	}

}

//方法1：
class Window extends Thread{
	
	//票数  需要加static 成为公共的 不然会变成3套票 因为new了三个对象。
	static int ticket = 100;
	
	Object Obj = new Object();
	@Override
	public void run() {
		//实现循环卖票
		while(true){
			synchronized(Obj){
				//如果票数大于0，继续售票，如果票数为0结束卖票
				if(ticket >0){
					System.out.println(getName() + "票号：" + ticket--);
				}else{
					break;//退出循环
				}
			}
		}
	}
}
